import request from "@/utils/request";

/**
 * 获取漏洞检测任务列表
 * @param {Object} params - 请求参数
 * @param {number} params.page_index - 页码
 * @param {number} params.page_size - 每页条数
 * @returns {Promise} 返回Promise对象
 */
export function getTaskList(params) {
  return request({
    url: "/check/task/",
    method: "get",
    params,
  });
}

/**
 * 创建漏洞检测任务
 * @param {Object} data - 请求数据
 * @param {string} data.name - 任务名称
 * @param {string} data.ip - 目标IP地址
 * @param {string} data.ports - 端口范围
 * @returns {Promise} 返回Promise对象
 */
export function createTask(data) {
  return request({
    url: "/check/task/",
    method: "post",
    data,
    headers: {
      "Content-Type": "multipart/form-data",
    },
  });
}

/**
 * 更新漏洞检测任务
 * @param {Object} data - 请求数据
 * @param {string} data.id - 任务ID
 * @param {string} data.name - 任务名称
 * @param {string} data.ip - 目标IP地址
 * @param {string} data.ports - 端口范围
 * @returns {Promise} 返回Promise对象
 */
export function updateTask(data) {
  return request({
    url: "/check/task/",
    method: "put",
    data,
  });
}

/**
 * 删除漏洞检测任务
 * @param {Object} data - 请求数据
 * @param {string} data.id - 任务ID
 * @returns {Promise} 返回Promise对象
 */
export function deleteTask(data) {
  return request({
    url: "/check/task/",
    method: "delete",
    data,
  });
}

/**
 * 启动漏洞检测任务
 * @param {Object} data - 请求数据
 * @param {string} data.id - 任务ID
 * @returns {Promise} 返回Promise对象
 */
export function startTask(data) {
  return request({
    url: "/check/start/",
    method: "post",
    data,
    headers: {
      "Content-Type": "multipart/form-data",
    },
  });
}

/**
 * 获取漏洞检测结果
 * @param {Object} params - 请求参数
 * @param {string} params.id - 任务ID
 * @param {number} params.page_index - 页码
 * @param {number} params.page_size - 每页条数
 * @returns {Promise} 返回Promise对象
 */
export function getTaskDetail(params) {
  return request({
    url: "/check/detail/",
    method: "get",
    params,
  });
}

/**
 * 下载检测结果报告
 * @param {Object} params - 请求参数
 * @param {string} params.id - 任务ID
 * @returns {Promise} 返回Promise对象
 */
export function downloadTaskReport(params) {
  return request({
    url: "/check/task_file/",
    method: "get",
    params,
    responseType: "blob",
  });
}
